写在前面 觉得本页面排版单调的话,可以尝试到这里看. 问题背景 在 openwrt 上碰到了一个偶现的 reboot 失效问题.执行 reboot 之后系统并没有重启,此时控制台还能工作. 初步排查 首先复现问题,发现复现后控制台仍可正常运行,但此时重复执行 reboot 也无效,执行 reboot -f 则可正常触发重启. 此处 reboot 是一个指向 busybox 的软链接,从 help 信息 -f Force (don't go through init) 中可以看出 reboot 和…
转载请注明出处: http://blog.csdn.net/suool/article/details/38453333 Linux常见信号与处理 基本概念 Linux的信号是一种进程间异步的通信机制,在实现上一种软中断.信号能够导致一个正在执行的进程被异步打断,转而去处理一个突发事件.异步事件不可预知,仅仅能通过一些特定方式预防.或者说,当该异步事件发生时依据原来的设定完毕对应的操作. 信号本质 信号是在软件层次上对中断机制的一种模拟.在原理上,一个进程收到一个信号与处理器收到一个中断请求能够…
记一个社交APP的开发过程——基础架构选型 目录[-] 基本产品形态 技术选型 最近两周在忙于开发一个社交App,因为之前做过一点儿社交方面的东西,就被拉去做API后端了,一个人头一次完整的去搭这么一套东西,上面也没有PM和各种催促,过程还是很轻松愉快充满乐趣的,现在后端已经基本完成,下周会进入联调测试的阶段,有些东西想写一写记录一下,先从技术选型开始. 基本产品形态 产品的基础功能无非是所有社交App都具备的那些东西,新鲜事.好友关系(同微博一样,单向follow).地理位置(当前的位置.你附…
一说到写日志,大家可能推荐一堆的开源日志框架,如:Log4Net.NLog,这些日志框架确实也不错,比较强大也比较灵活,但也正因为又强大又灵活,导致我们使用他们时需要引用一些DLL,同时还要学习各种用法及配置文件,这对于有些小工具.小程序.小网站来说,有点“杀鸡焉俺用牛刀”的感觉,而且如果对这些日志框架不了解,可能输出来的日志性能或效果未毕是与自己所想的,鉴于这几个原因,我自己重复造轮子,编写了一个轻量级的异步写日志的实用工具类(LogAsyncWriter),这个类还是比较简单的,实现思路也很…
本文从本人的163博客搬迁至此. MFM是改进型频率调制的缩写,其本质是一种非归零码,是用于磁介质硬盘存储的一种调制方式.调制规则有两句话,即两个翻转条件: 1.为1的码元在每个码元的正中进行一次翻转:为0的码元不翻转. 2.对连续两个为0的码元,则在第一个为0的码元结束时翻转一次:单个的0码元不翻转. 设计过程: 若码元的同步时钟为CLK,不失一般性,假设CLK的上升沿开始产生新的码元,下降沿为该码元的正中.则MFM调制信号有可能在时钟的上升沿,也有可能在时钟的下降沿发生电平翻转.由于一个触发…
转自原文BeginInvoke 方法真的是新开一个线程进行异步调用吗? BeginInvoke 方法真的是新开一个线程进行异步调用吗? 参考以下代码: public delegate void treeinvoke(); private void UpdateTreeView() { MessageBox.Show(System.Threading.Thread.CurrentThread.Name); } private void button1_Click(object sender, Sy…
从最开始的使用redis实现的单进程消费的异步任务系统到加入swoole的多进程消费模式,现在,我们的异步任务系统终于又能迈进一步. 因为有了前面两个简单系统的经验,这回基于RabbitMQ的异步任务系统设计的的更加完善,包括多进程消费,异常重试等. 系统介绍 消费端架构图 从图中可以看到,我们这个系统是一个基于事件的异步任务系统.就是说当一个事件产生时,生产者将事件抛给调度器,调度器负责查询事件下有哪些任务,然后将这些任务丢到相应的队列中,最后由消费者消费任务队列中的任务. 在整个系统中主要分…
1.前言 几年前,一个开发同学遇到同步调用异步函数出现死锁问题,导致UI界面假死.我解释了一堆,关于状态机.线程池.WindowsFormsSynchronizationContext.Post.control.BeginInvoke.APC.IOCP,结果我也没讲明白.他也没听明白.后来路过他座位时看到他在各种摸索.尝试,使用Task.await.async各种组合,当时的场景是这样的: .问题有点复杂,随着那个开发同学离职转做产品后,就不了了之了.工作中许多同事对于同步.异步也不是特别了解,…
问题场景:在客户那碰到一个操作卡死的现象 问题解决: 1.如何挂钩是死锁问题:通过代码跟踪,发现是指执行一个SQL语句超时,因此猜想可能是表锁住了 2.如果确认是思索问题:通过SQL发现死锁,以下是相关的SQL  select request_session_id SPID,OBJECT_NAME(resource_associated_entity_id) TABLENAME from sys.dm_tran_locks where resource_type='OBJECT' 上面这个SQL…
安卓中获取网络图片,生成缓存 用安卓手机,因为手机流量的限制,所以我们在做应用时,要尽量为用户考虑,尽量少耗点用户的流量,而在应用中网络图片的显示无疑是消耗流量最大的,所以我们可以采取压缩图片或者将图片进行缓存,使图片只需要获取一次即可. 获取网络图片,并进行压缩 public static Bitmap returnBitMapWego(String url) { URL myFileUrl = null; Bitmap bitmap = null; try { myFileUrl = new…
这个死锁的原因:一个动作需要两个临界对象.静态同步方法,就是一个临界对象.这种场景,静态同步方法每次只能有一个线程持有.如果存在另一个临界对象,静态同步方法中也需要获取这个临界对象.即一个动作需要两个临界对象. We are experiencing deadlocks on our server. We have tested with log4j version 1.2.8 up to and including 1.2.15 We have identified that cause to…
这道js的面试题,是这样的,页面上有一个按钮,一个ul,点击按钮的时候,每隔1秒钟向ul的后面追加一个li, 一共追加10个,li的内容从0开始技术( 0, 1, 2, ....9 ),首先我们用闭包封装一个创建li元素的函数. var create = (function(){ var count = 0; return function(){ var oLi = document.createElement( "li" ); oLi.innerHTML = count++; ret…
前言 好好学习,天天向上. 正文 好像也是一个不难的问题,刚视频里看到的,就记一下吧. 下面是表中原始的数据结构,做了一个倒叙排序: select * from Employee order by Salary desc 首先来看一下如何取Salary第二的记录. --获取salary排行第二的人的信息 select top 1 * from Employee where Salary < (select max(salary) from Employee ) order by Salary d…
在异步编程中,如果稍有不注意,就会造成死锁问题.何为死锁:即两个以上的线程同时争夺被互相锁住的资源,两个都不放手. 在UI或asp.net中,容易造成死锁的代码如下所示: private void btnSet_Click(object sender, EventArgs e) { Task<int> task= DelayAsync(); //在同步代码中有wait同步等待函数 task.Wait(); this.Text = "测试"; } private async…
条件有三: 1.需要在软件包的Makefile中添加宏定义Package/$(package-name)/preinst和Package/$(package-name)/prerm define Package/hello/postinst #!/bin/sh # check if we are on real system if [ -z "$${IPKG_INSTROOT}" ]; then echo "Enabling rc.d symlink for hello&qu…
信号屏蔽 信号忽略:系统仍然传递该信号,只是相应的进程不做任何处理 信号屏蔽:进程不捕获信号,信号处于未决状态,当不再屏蔽信号时可以捕获之前被屏蔽的信号. 信号集数据结构定义: typedef __sigset_t sigset_t; #define _SIGSET_NWORDS (1024 / (8 * sizeof(unsigned long int))) typedef struct { //此结构体占据32 * 32 = 1024 bit 每bit对应一个信号 val[0]0-31位对应…
此文前端框架使用 rax,全篇代码暂未开源(待开源) 原文链接地址:Nealyang/PersonalBlog 前言 貌似在面试中,你如果设计一个 react/vue 组件,貌似已经是司空见惯的问题了.本文不是理论片,更多的是自己的一步步思考和实践.文中会有很多笔者的思考过程,欢迎评论区多多交流和讨论. 从需求讨论.技术方案探讨到编码.到最终的测试,经历过了很多次的脑暴,也遇到过非常多的坑,其中有可能跟业务有关.也有可能跟框架有关,基于这些坑,又讨论了很多解决方案和非常 hack(歪门邪道)的对…
package com.mall.common; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import redis.clients.jedis.ShardedJedis; import redis.clients.jedis.Sh…
在接触Mvc后,开始有点觉得很累,什么都要自己做,完全没有WebForm的易用性: 大概用了一个月左右的时候,越用用顺手,就习惯了MVC的这种开发方式,灵活,简洁: 当初学习MVC,网上看资料,都是讲的基础知识,没有一个完整的Demo,我今天就来实现这样的一件事吧! 创建MVC项目(本例用MVC4),选择空模版 创建HomeController,放在根目录的Controllers文件夹下面 添加如下代码 /// <summary> /// 列表页面 /// </summary> /…
前言 刷题刷得头疼,水篇blog.这个BUG是我大约一个月前,在做15445实现lock_manager的时候遇到的一个很恶劣但很愚蠢的BUG,排查 + 摸鱼大概花了我三天的时间,根本原因是我在使用std::unordered_map做并发的时候考虑不周.但由于这个BUG无法在我的本地复现,只能提交代码后再gradescope上看到执行日志,而且打印的日志还不能太多,因为gradescope的执行比较慢,打印日志如果稍微多加一点就会报TIMEOUT,所以着实让我抓狂了一段时间.最后的解决也很突然…
简单的使用场景:消息队列的场景有:解耦,异步,削峰. 此例用的场景,异步 有时候会有请求消耗时间过长,不能老让用户等待返回结果,可以用消息队列来做异步实现,之前用过workmain等类似的异步,但不如rabbit强大, 一个实际场景:我们做的一个抢任务功能,成功或失败会有一个日志记录,这个功能没必要实时返回,可以使用异步, 框架tp5,一个任务执行程序consumer,多个任务发布入口producer,用定时任务监控consumer是否挂掉,挂掉则重新启动,并记录日志挂掉的原因(有时候会数据库连…
摘要:当需要批量提交异步任务,推荐CompletionService.CompletionService将线程池Executor和阻塞队列融合,让批量异步任务管理更简单. 本文分享自华为云社区<JDK批量异步任务最强工具CompletionService>,作者: JavaEdge. 如何优化一个查询各个价格接口的代码?若使用"ThreadPoolExecutor+Future",可能优化如下: 三个线程异步执行查询价格,通过三次调用Future的get()方法获取结果,之…
我的maven 项目有一个红色感叹号, 而且Problems 存在 errors : Description Resource Path Location Type Archive for required library: 'D:/mvn/repos/junit/junit/3.8.1/junit-3.8.1.jar' in project 'xxx' cannot be read or is not a valid ZIP file ktb-mgr Maven Webapp Build pa…
在我们做各类统计和各类报表的时候,会有各种各样的查询要求.条件 这篇主要记录一个常见的统计查询 要求如下: 统计一段时间内,每天注册人数,如果某天没有人注册则显示为0 现在建个简单的表来试试 建表语句如下: CREATE TABLE [dbo].[UserInfo]( ,) NOT NULL, ) NOT NULL, [URegTime] [datetime] NOT NULL, CONSTRAINT [PK_UserInfo] PRIMARY KEY CLUSTERED ( [UserID]…
继续之前设定的学习目标前,先来一篇小小的外篇.按照第一篇里的配置方式配置好的工程前两天还能正常工作,昨天却突然无法通过Add-Migration命令进行数据库的升级.错误信息如下: System.Data.Entity.Core.ProviderIncompatibleException: 从数据库中获取提供程序信息时出错.这可能是 Entity Framework 使用的连接字符串不正确导致的.有关详细信息,请查看内部异常并确保连接字符串正确. ---> System.Data.Entity.…
今天遇到一个比较有意思的bug, 这里简单记录下. Bug的症状是通过拖拉边框把我们客户端主窗口拖小之后,再最大化,会发现窗口显示有问题, 看起来像是刷新问题, 有些地方显示的不对了. 这里要说明的是我这里的主窗口是非常复杂的窗口, 里面集成了很多组件(cpmponent),有很多层的子窗口. 这个问题只有在特定条件下才会发生, 正常情况下都是好的. 遇到这种问题,我们怎么处理?  首先当然是观察症状, 究竟是刷新问题, 还是Layout出错了. 我们可以通过Spy++查看窗口层次是不是正确,…
简介 过去的一周,都睡的很晚,终于做出了Atom上的APICloud语法提示与补全插件:apicloud_autocomplete.个中滋味,感觉还是有必要记录下来的.代码基于 GPL-3.0 开源,所以我可以较为详细的记录一些很难被理解和体会的技术细节.APICloud目前已有Studio,VSCode,Webstrom和Sublime的语法补全插件,但是毫无疑问,我做的这款,是目前为止最好的 -- 唯一的一个支持100%所有API,唯一的一个同时支持模糊匹配和静态推导语法提示插件! 可能你会…
最近读了Android异步处理系列文章索引,感觉这个文章系列写得不错!可以作为参考…
我自己定义了一个random.py   和pev的包含路径一样的 解决办法是: 出现这种问题,可以import 这个模块,print 这个模块…
创建一个控制台程序和一个类库, 在控制台创建一个匿名对象,然后再在类库中访问它,代码如下: namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var obj = new { Id = 1 }; var c = new ClassLibrary1.TestClass(); c.Test(obj); Console.ReadLine(); } } } namespace ClassLib…