Web Analytics
yangyang

码农兼一个普普通通小青年

All Posts


ThinkPad W540硬件升级以及安装Windows11

几年前,朋友送了一台笔记本给我,这笔记本是2014年款的ThinkPad W540,在当年来说,性能还是不错,但是放到现在已然已经过时了,但由于贫穷,于是在手动进行了一些配置硬件配置升级后,只能继续使用。这里记录一下我对这台笔记本的一些升级以及如何在上面安装Windows 11操作系统的。     有了小孩之后,这台笔记本其实放在家里已经很少打开了,上周五碰到单位同事有点事情,需要笔记本操作一下,发现已经放了至少6个月没开机的笔记本无法启动了。怀疑是之前加装的128G的那块启动固态硬盘坏了,应该找不到分区表。于是打算折腾一下,今天终于搞好了。 …

Windows 11 ThinkPad W540

线程创建过多导致产生OutOfMemoryException的问题及优化

今天在线上环境又吃了一个bug,程序之前运行良好,最近在增加了数据量之后,启动的时候就直接报了OutOfMemory的bug,但明明内存占用只有100多M。在查看日志后发现,在调用Thread.Start创建线程的时候报了OutOfMemoryException,这里记录一下如何查找原因以及对应的修改方法。 …

OutOfMemory .NET Thread

使用WPF来绘制K线图

最近在研究WPF下绘制K线图的功能,由于WPF下图表控件很少,且大多都是收费的,如果自己从头开始写比较复杂,于是研究了一下amCharts Stock Chart for WPF这个控件,并用ILSpy反编译出了他的源码,研究了一下其中的K线绘制功能。 …

ILSpy CandleStick WPF

列出计算机中的等宽字符

根据针对不同字符显示的宽度是否相同,可以将字体区分为等宽字体(monospaced fonts)和比例字体(proportional font)。等宽字体是指在改字体下,所有字符的宽度都相等,对于显示“w”和“i”来说,这两者字符所占宽度相等,“i”的两边会用空格填充从而达到跟“w”相同宽度。比例字体则是针对不同字符,使用不同宽度显示。现在大部分字体都是比例字体,因为其更加紧凑和美观。但在某些领域,比如程序设计中的代码展示,则由于等宽字体有诸如显示清晰,对齐方便等优点成为代码显示的首选,本文介绍了两类字体的区别,如何区分,以及如何使用代码列出本地计算机安装的所有等宽字体的方法。 …

monospaced fonts proportional font

实现一个时间同步客户端NTPClock

由于计算机本地时间可能不准确,所以需要与授时服务器进行时间同步。Windows自带有定时同步功能,但是如前文所述,在某些情况下可能会失败。所以有必要开发一个工具能够定时同步、并且在同步失败后能够进行重试。 本文介绍了如何使用WPF开编写一个利用NTP协议进行时间同步的小工具。 …

NTP DispatcherTimer

使用NTP协议实现本地时间跟NTP授时服务器进行同步

本地计算机的时间随着时间的运行,可能会出现不准确的现象,这就需要隔一段时间通过互联网时间进行同步,Windows自带的同步机制是默认1周同步一次,可以通过修改注册表来实现修改频率。但Windows在进行时间同步时,可能会由于网络问题超时而同步失败,它没有提供重试机制以提供更多的选择。本文介绍了NTP协议以及在C#里面的实现,从而能够更加灵活的控制Windows系统时间与授时服务器的同步。 …


解决Windows上ActiveMQ服务无法启动的问题

Windows上的ActiveMQ服务由于某种原因无法启动,通过看日志,发现是端口被占用,首先使用netstat -ano 查看占用该端口的进程,如果发现有占用,根据列出的pid,结束这个进程再启动试试,如果没有进程占用改端口,那么可能是由于“Internet Connection Sharing (ICS)服务”,可以尝试重启该服务,然后再启动ActiveMQ试试看。 …

ActiveMQ

修改系统时间导致的一个定时操作被错误的执行两次的bug

今天吃了一个线上的bug,问题还比较严重,这里记录一下。我们的程序其中有一个定时操作,每天在某一时刻只执行一次操作,这个时间必须是准确的,但由于我们没有时间发生器等硬件设备,所以定时操作的时间是获取的计算机的本机时间,在程序运行之后,对计算机的本地时间进行了调整,从而导致了原有的仅执行一次的逻辑发生了变化,导致了重复执行。 …

ManualResetEvent

使TextBox的TextChanged事件延迟触发

Winform里面的TextBox有TextChange事件,当TextBox的值发生改变时就会触发,在进行一些诸如对用户的输入进行即时校验时可能会用到。但是这个事件再某些情况下触发的过于频繁,会造成一些资源的浪费。我们不需要用户没键入一次就触发一个事件,而是需要等待用户“停止”输入时再进行触发,一般有两种解决方法,一种是使用焦点里开TextBox时,在相应的事件里处理,另外就是定时器方案,给事件触发一个延时,即在限定的时间范围内,只触发一次。本文提供了延迟触发TextChanged事件的几种实现。 …