每周散记 2018112

1. java 环境

java gradle 项目导入问题
解决: 修改settings.gradle 文件的 rootProject.name 属性值与项目名相同
原因是因为项目中 settings.gradle 文件的 rootProject.name 属性值与项目名不同造成的
https://www.cnblogs.com/daimajun/p/7298540.html

Java开发常用工具
elipse jdk JUnit maven gradle
git svn
starUML powerDesigner
https://blog.csdn.net/han0373/article/details/79180553

2. 通过过媒体曝光向社会公布
可以发布微博@比较权威的媒体。如央视新闻,人民网。

微信小程序推广
https://www.douban.com/note/695520290/

3. c++ 库

Qt 完全可以代替 stl 写数据模型。多线程的话,Qt 有 QtConcurrent,包含线程池和山寨 map/reduce,也比 boost 好用多了。

网络通信的话,Qt 就不太行了。所以我折腾了一个 QtNetworkNg(github),实现基于 coroutine 的 socket/ssl,顺便包装了一下 libressl 的加密算法。又折腾了一个 laf_rpc(github),实现了 C++ 史上 API 最简洁的 RPC. 我现在自己用这一套,完全基于 Qt,写起来很舒服。。

然而,,其实并没什么卵用,我只有一个项目用 c++,平时都是 python/java/js

:
: 某软件
: 数据模型用 stl 写
: 数据服务接口用corba写
: 界面用 qt 写
: 网络通讯用 ACE + TAO写
: 多线程用boost写
: 于是一个对象,在各种框架中转来转去。。。
: 看起来设计的人员也很牛逼,跨平台,什么专业用什么
: 最后系统成了一团烂泥,没人维护了
: 其实从根上就是, stl 不好用
: 每个库都不能完全基于 stl, 又试图标准,兼容 stl
: 特别是gui库, 就没有基于 stl的好用的库
: 所以如果是小型项目, 你就没必要折腾 stl, 啥好用啥快用啥
: 如果是大型项目, 就得考虑基准库的生态问题, 库越少越基于一致标准越好
: 所以,大型项目,如果涉及到 gui的, 压根别考虑 stl
: 还是全部用 qt 好一些

Qt 安装
https://jingyan.baidu.com/article/656db918d9292ae380249c4f.html
https://blog.csdn.net/qq_37059483/article/details/77800592

下载地址:
http://www.qter.org/portal.php?mod=view&aid=10
Qt SDK下载:包括各种开发需要的组件的包
Qt Creator下载:只有编辑器组件 编译器都没有
旧版本:个版本历史,Qt 从后期版本开始 使用了组件包 所以体积比较大。

sqlite 内存模式
http://www.qter.org/portal.php?mod=view&aid=51

QML是一种用户界面规范和标记语言,理解类似html。
Quick是 QML 类型和功能的标准库,是一个用于 QML 的工具包。
Qt Widgets 模块提供了一组UI元素来创建经典的桌面风格的用户界面。组件库。
Qt Widgets VS QML/Qt Quick 关键区别前者传统开发c++, 后者现代开发,qml标记语言,使ui和数据分离。

mfc 设置透明
https://blog.csdn.net/songyimin1208/article/details/53419810
https://blog.csdn.net/abidepan/article/details/7925679

设置层次 使用HWND_TOP参数调用SetWindowPos?
ipmaskdlg.SetWindowPos(&wndTop, rect.left, rect.top, rect.Width(), rect.Height(), SWP_SHOWWINDOW);

ffmpeg 推流

push
ffmpeg -re -i F: est.mp4 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://alipush.51joyshow.com/test/test0?auth_key=1542118030-0-0-8c3a6c6b544a65108c34a5016d025a14

windows 共享内存封装
https://blog.csdn.net/zsc_976529378/article/details/52604973
https://blog.csdn.net/while0/article/details/11358887 这个不错

windows 进程互斥 线程关键段
https://blog.csdn.net/KLKFL/article/details/80575090
https://www.cnblogs.com/huhuuu/p/3589590.html

linux 共享内存
https://blog.csdn.net/wan_exe/article/details/56484664

linux 用共享内存和互斥锁 实现进程间互斥
https://blog.csdn.net/baidu20008/article/details/23782465
互斥锁变量可以是进程专用的(进程内)变量,也可以是系统范围内的(进程间)变量。要在多个进程中的线程之间共享互斥锁,可以在共享内存中创建互斥锁,并将pshared属性设置为 PTHREAD_PROCESS_SHARED。

进程间互斥 信号量
https://blog.csdn.net/svitter/article/details/39757359

互斥和信号量区别:
互斥量用于线程的互斥,信号线用于线程的同步。
互斥量的加锁和解锁必须由同一线程分别对应使用,信号量可以由一个线程释放,另一个线程得到
https://blog.csdn.net/shaohua_lv/article/details/70257100

进程间通信
同一个机子 共享内存更好些,不过需要考虑同步和互斥问题。
1.管道:速度慢,容量有限,只有父子进程能通讯    
2.FIFO:任何进程间都能通讯,但速度慢    
3.消息队列:容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题    
4.信号量:不能传递复杂消息,只能用来同步    
5.共享内存区:能够很容易控制容量,速度快,但要保持同步,比如一个进程在写的时候,另一个进程要注意读写的问题,相当于线程中的线程安全,当然,共享内存区同样可以用作线程间通讯,不过没这个必要,线程间本来就已经共享了同一进程内的一块内存
https://blog.csdn.net/wh_sjc/article/details/70283843


中医入门
http://www.360doc.com/content/17/1108/07/26469483_701848645.shtml
https://jingyan.baidu.com/article/5225f26bbf0b03e6fa090806.html

原文地址:https://www.cnblogs.com/swing07/p/9969702.html