- 浏览: 911439 次
- 性别:
- 来自: 深圳
最新评论
-
tcspecial:
陈宇飞 写道reset()为什么不可以用了,版本低了,还是头文 ...
QTreeView 使用自定义Model -
陈宇飞:
reset()为什么不可以用了,版本低了,还是头文件呢
QTreeView 使用自定义Model -
gamesliang:
海康SDK截图 -
tadpole_java:
环形缓冲区类(C++源码)绝对可用.....转到你网易的微博上 ...
QByteArray储存二进制数据(包括结构体,自定义QT对象) -
tcspecial:
tadpole_java 写道经常看看您的帖子,把它当成教科书 ...
QByteArray储存二进制数据(包括结构体,自定义QT对象)
文章列表
python 调用c除了swig,python/c api方式外,还可以通过ctypes模块动态加载dll/so,不需要编写绑定。
C接口:
int Set(char *key, char *val);
int Get(char *key, char *val, int *len);
python 调用:
import ctypes
#加载以C方式导出的动态库
API = ctypes.CDLL('./libtest.so')
iRet = API.Set('hello112' , 'world-111')
print iRet
#传递动态缓冲区 ...
Lua 下通过虚拟栈传递参数,只要注册相应接口便可调用C函数。
#include "lua.h" // v5.1.5
#include "lualib.h"
#include "lauxlib.h"
// 原生函数
int ShowVal(const char *szReq, int &score);
// 包装函数
int GetScore(lua_State *env)
{
int count = lua_gettop(env);
if (count != 1)
...
C++ 中可通过虚函数实现运行时多态,还可以实现更高效的静态多态。
通过把派生类作为基类的模板参数来实现,该方式称为CRTP(Curious Recurring Template Pattern)。
#include <iostream>
using namespace std;
// 中间类
template <class T>
class BaseClass {
public:
// 强转,调用指定对象方法
void Func(){
static_cast<T&>(*this).funcImpl() ...
之前编码一直用的是iter++,同事说该方式效率比较低。带着疑惑看STL源码:
// vector
_Myiter& operator++()
{ // preincrement
++*(_Mybase *)this;
return (*this);
}
_Myiter operator++(int)
{ // postincrement
_Myiter _Tmp = *this;
++*this;
return (_Tmp);
}
果不其然,++iter 前向表达式返回引用,而iter++返回的却是一临时对象。
...
面试中经常遇到类似多态,虚继承,RTTI,dynamic_cast实现原理之类的问题,这块需要对C++底层内存模型比较理解。C++由于没有存储对象元信息(java反射基础),要支持多态,多继承特性,导致C++对象内存模型异常复杂。
一. 继承内存模型
1. 基类
struct B
{
long b;
virtual void foo(){}
virtual void bar(){}
};
gcc的-fdump-class-hierarchy选项,它可以用于输出C++程序的虚表结构
g++ -fdump-class-hiera ...
1. var & val
var 变量,可变
val 类似常量,不可变
2. map/reduce
val list = List(1,2,3,4,5,6)
list.map( f => println(s"val: $f") ) // val:1 xxx val:6
val sum = list.reduce( (sum, n) => sum+n ) // 21
3. 泛型
scala泛型设计太过复杂,泛型支持多个奇怪的操作符,如:<: >: <% T:class T:Ordering
...
一. 安装环境
wget https://downloads.lightbend.com/scala/2.12.6/scala-2.12.6.tgz
vi ~/.bash_profile
export PATH=$SCALA_HOME/bin:$PATH
二. 运行
Scala是解释性JVM语言,编译后会生成*.class。也可在交互式CLI上编码。
ling-Pro:~ sun$ scala
Welcome to Scala 2.12.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_102).
scala> ...
一. 查看VM实例名称
test@cloudshell:~ (test-206504)$ whoami
test
二. 本地生成密钥对
$ cd ~/.ssh
$ ssh-keygen -f cloudkey #设置密码
修改公钥用户名
cat cloudkey.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAxxxGVBvsDfN9gyQDFXJtZjSaH3afh0YDn9v5k30xBH7meH6l+SbEZ3NHZpQ== sun@localhost
sun@localhost 改为 sun@test
三. 导入 ...
观察者模式在对象间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知。
类图:
一. java swing
swing 注册事件监听器过程,就是观察者模式。
// 注册监听事件
button.addActionListener( new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Hello");
}
});
源码跟踪:
listenerList.add(Actio ...
最近看到《设计之禅》的装饰器模式,特用C++实现了一遍,发现有些有意思的东西需要探究一下。UML类图:
一. C++实现
#include <stdio.h>
/// Base
class Component
{
public:
virtual ~Component(){}
virtual int operate() = 0;
};
/ ...
一. Java volatile
volatile关键字可保证变量可见性,但是无法保证原子性,下面演示多线程修改共享变量Count场景。
/**
* 共享变量在多线程下修改测试
*/
public class NonAtomicTest extends Thread {
public static volatile int count = 0;
public void increase(){
count++;
}
public void run(){
for(int i=0; i<10000; i++){
in ...
C++ 符号还原(Demangling),windows/linux平台需分别处理。
#include <typeinfo>
#include <cxxabi.h>
class Foo{};
#ifndef __GNUC__ // vc
const char *real_name = typeid(Foo*[10]).name();
#else // linux
char *real_name = abi::__cxa_demangle(typeid(Foo*[10]).name(), NULL, NULL, NULL);
...
Linux 内核目录/proc/sys/net 提供了很多网络协议栈配置参数,可控制网络协议栈行为,优化系统性能。
一. 基础命令
sysctl -a 显示内核参数
$ sysctl net.core.somaxconn;
$ sysctl -w net.core.somaxconn=32768
$ echo 32768 > /proc/sys/net/core/somaxconn
$
$ vi /etc/sysctl.conf
$ sysctl -p # 使参数生效
二. TCP/IP网络参数
连接参数
/proc/sys/netc ...
该语法糖在jvm脚本语言Groovy/Scale已有很好的支持,Java从8.0才开始支持该特性。
/**
* 基础Lambda表达式
*
*/
public static void testLambda() {
String[] ss = { "hello", "world", "sun" };
List<String> list = Arrays.asList(ss);
// 接口作为回调函数,C: typdef int (*func)(int,int)
AddServ ...
Spring框架两大核心原理:AOP和IOC,IOC Inversion of control 用来解决依赖关系,通过工厂模式实现。
AOP Aspect of programming 通过动态代理实现。
1. 定义接口
/**
* 用户服务接口
* @author lingsun
*
*/
public interface UserService {
public String getName();
public Integer getAge();
}
/**
* 用户服务实现类
* @author sunling3
*
...