jiewuyu个人页面-阿里云开发者社区

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
  • 高分内容
  • 最新动态
  • 文章
  • 问答
  • 回答了问题 2020-01-15

    【hi聊】2020新年展望:get程序员过年的正确姿势

    新年新气象,预祝阿里云社区和回答社区越来越好

正在加载, 请稍后...
暂无更多信息

2020年01月

  • 01.15 10:44:10
    回答了问题 2020-01-15 10:44:10

    【hi聊】2020新年展望:get程序员过年的正确姿势

    新年新气象,预祝阿里云社区和回答社区越来越好

    踩0 评论0
  • 01.15 10:02:49
    回答了问题 2020-01-15 10:02:49

    充值能不能开票?

    充值什么呀,如果是阿里云则可以开。 参考: https://jingyan.baidu.com/article/22a299b58656709e19376af9.html

    踩0 评论0
  • 01.15 10:01:21
    回答了问题 2020-01-15 10:01:21

    新程序员七宗罪

    1. 没有一个初步的战略 大多数没有计算机科学或数据分析背景的工程师想要在数据科学中开始一个新的职业生涯,他们没有一个明确的战略,没有成为数据科学家、分析师或工程师的明确步骤。他们试图尽可能快地用信息填满自己的脑袋,而不是真正深入到特定的主题;他们倾向于一次注册多个在线课程,从不同的网站下载几个备忘单,阅读许多作者的文章,但没有一个结构化的计划。在开始这段旅程之前,我强烈建议你制定一个学习计划,并列出一些日常习惯,以实现你的目标,增强你的分析和编程技能。对你想从事的行业使用的最流行的编程语言和软件进行自己的研究,搜索最广泛使用的库和包,并根据你的目标选择最适合你的编程语言和软件。坚持和练习会使你成为大师。

    2. 尝试同时学习几种编程语言和软件 新程序员常常会受到诱惑,想要同时学习几种编程语言和软件,把它们作为技术技能写进简历。虽然你可能认为这是一种营销自己的策略,但它往往会适得其反。拥有数据科学、数据分析师和数据工程职位的公司和组织更有可能要求应聘者具备一种或两种或最多三种编程语言和软件的坚实背景。很少有职位要求你同时精通Python, R, SQL, C, c , c#, Matlab, Java, Ruby。相反,你应该研究一下你更可能在某个特定行业或公司使用的编程语言和软件;掌握你的编程和分析技能,并成为真正的专家。你将认识到,所有编程语言之间共享一个公共逻辑和类似的函数,在此之后,从一种语言到另一种语言的转换只需要学习一种不同的语法,而不需要学习它背后的整个逻辑。

    3.没有在代码上写注释 尽管这听起来很明显,而且是一个无关紧要的任务,但它代表了一种很好的策略,可以跟踪每一行或每一块代码执行的操作,以便返回到暂停的项目。在最初的代码编写过程中,程序员对项目的目的和目标有了清晰而清晰的认识;他们知道自己想要编写的程序背后的逻辑步骤和追求的结果。然而,由于多种原因(经济约束、信息缺失、优先级的改变),所有的项目都很容易暂停,这将迫使程序员切换到不同的任务,而让先前的任务保持不变。一个中断的项目需要的时间越长,就越不容易记住它的位置和缺失的点。这里是注释发挥作用的地方。试着在你认为有必要的地方使用它们;记住要足够清晰,并记住它们应该允许代码程序员和执行者理解代码背后的逻辑步骤。

    1. 在代码编写过程中不要求反馈 在你的经理要求你做什么,他/她希望你做什么,客户要求什么,和你实际做什么之间总是有很大的差距。当你在开发一个程序或新代码时,试着把它分成几个阶段,并在进入下一个阶段之前征求反馈。在每个阶段结束后得到反馈,这将让你知道你是否正确,或者是否需要根据客户的要求进行更改。这并不意味着你无法理解其他人的要求,而是将其视为利益相关者之间的想法和期望的统一。如果在偏离正轨的情况下,你收到反馈的频率越高,你需要进行的修改就越少。请记住,持续的沟通对于每一个项目的成功实施都是至关重要的。

    2. 没有测试你当前的知识 你可能已经看了很多逐步编程教程。你可能也读过许多数据科学书籍和编程书。你可能已经完成了许多编程训练营的练习。下一步是什么?测试你目前的知识。这种训练营和课程的真正价值不在于证书本身,而在于你学到的知识,并能成功地应用于解决某个问题。老实说,每个人都可以通过参加在线课程来获得证书,只要跳过大部分的课程就可以了;公司和组织都非常清楚这一点。尝试把自己推向新的极限,在网上寻找编程挑战,尝试头脑风暴,在没有太多帮助资源的情况下编写代码。这并不意味着你在实际工作中不会用到它们,但它会让你感觉更舒服,更安全,更少依赖它们。

    3. 没有充分利用优缺点 在某种程度上,你可能会觉得使用一种特定的编程语言和软件是很舒服的,而你可能会发现学习一种新的语言和软件是没有用的。我曾多次听到数据分析师争论哪种编程语言在能力、可用库和包、在线资源和流行程度方面是最好的。但是,你必须足够谦虚,认识到总有从另一种语言、库、包或软件中学习新东西的空间。每种编程语言和软件都有其优点和缺点,但是我们的目标是充分利用它们,并具有足够的灵活性,以确定最适合用于特定任务以解决特定问题的语言和软件。

    4. 假设你什么都知道 相信我,没有人什么都知道。数据科学领域非常广泛,每天都要学习新东西。库、包、函数、方法和算法的总数非常多。永远保持好奇,保持谦虚,如果你认为你知道的很多,你实际知道的就很少。 ———————————————— 版权声明:本文为CSDN博主「磐创 AI」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/fendouaini/article/details/103252444

    踩0 评论0
  • 01.15 09:59:53
    回答了问题 2020-01-15 09:59:53

    最佳实践的阅读过程中碰到问题怎么联系作者?

    论坛、邮箱、个人微博,个人主页等,根据作者的爱好来

    踩0 评论0
  • 01.15 09:58:36
    回答了问题 2020-01-15 09:58:36

    数据告诉你:哪个行业最难逃35岁危机?

    不转型的程序员

    踩0 评论0
  • 01.15 09:57:47
    回答了问题 2020-01-15 09:57:47

    硬核 | 程序员接私活常用平台汇总

    听说过猪八戒,不过没使用过

    踩0 评论0
  • 01.14 10:47:14
    回答了问题 2020-01-14 10:47:14

    如何去除datav加载动画

    去除不了吧,再说还挺酷的,加载完成后就一直展示,没有什么影响的。 参考:https://developer.aliyun.com/ask/109382?spm=a2c6h.13159736

    踩0 评论0
  • 01.14 10:45:28
    回答了问题 2020-01-14 10:45:28

    关于备案得事情咨询。

    你可以先检查下自己的材料是否准备无误,或者有什么地方存在模糊不清的地方,另外在和客服了解具体卡在哪一步,对症下药。

    踩0 评论0
  • 01.13 14:18:27
    回答了问题 2020-01-13 14:18:27

    各大网站的Python爬取登录汇总—含教程

    感谢大佬的教程。与有去学习下

    踩0 评论0
  • 01.13 14:17:11
    回答了问题 2020-01-13 14:17:11

    请问已备案网站如何增加新域名?

    还需要去备案中心进行域名添加备案,填写内容和上次差不多,不过这次的域名还要填写用途和网站名,其他个人信息好像不用再填。

    踩0 评论0
  • 01.13 14:15:17
    回答了问题 2020-01-13 14:15:17

    昨晚家里停网后,我动了邪念用Python破解了隔壁小姐姐的wifi密码!

    那你最后加了小姐姐微信或要到电话没,去小姐姐家浪没。你还可以了解下Kali Linux系统

    踩0 评论0
  • 01.13 14:12:24
    回答了问题 2020-01-13 14:12:24

    Rust 成为 C 的接班人,将变成主流编程语言?

    相关详细内容参考:https://www.infoq.cn/article/iZx5Blf9hOeZjRguHzK5

    C 写 driver 的主要缺陷在于 C 赋予程序员的自由度过大,所谓能力越大责任越大,程序员需要小心处理各种细节以保证 driver 的安全。在一些情况下,程序员容易因为疏忽大意写出不安全的代码。例如申请的内存忘记释放(内存泄漏),使用了已经被释放的指针(use-after-free),数组越界访问(buffer overflow)等等。这些错误大多归因为 C 是一门不安全的语言。

    前段时间,随着微软计划用 Rust 取代 C 和 C++ 新闻的曝出,Rust 被认为是 C/C++ 的接班人。由 Mozilla 开发的 Rust 被认为具有较强的安全性。同时,由于特殊的类型系统,Rust 不需要垃圾收集,也被认为是高效的。Rust 程序运行速度极快,可防止段错误并保证线程安全。这些属性使该语言极大地吸引了专注于应用程序安全性的开发人员。香港中文大学系统安全系博士李卓华指出,Rust 主要通过严格的语法和安全检查来限制程序员,“逼迫”程序员写出更安全的代码。例如 Rust 的 ownership 特性保证任何时刻,一个对象最多只有一个可变引用,且在其生命期结束后编译器会自动将其内存释放,从而避免了内存泄漏和 use-after-free 的问题

    踩0 评论0
  • 01.10 10:00:34
    回答了问题 2020-01-10 10:00:34

    ANSI C和K&R C之间的主要区别是什么?

    ANSI C 对 K&R C 的修订. (本段根据《C Programming Language》和C语言标准整理。不求完整,希望列出最常见的差异) 对于源文件内部的标识符,有效的最小长度扩充到31个字符。文件间连接时,标识符的最小有效长度仍然为6个字符。(许多实现都支持更大的长度) 增加了几个新关键字:void,const,volatile,signed,enum。抛弃了老关键字entry。 在换意字符 \ 之后写非规定的序列,其作用确定为无定义。 规定8和9都不是八进制数的合法字符。 引进了数的后缀字符:整数的U和L,浮点数的F和L。 规定连续出现的字符串常量将被拼接在一起。 引进了“宽字符”的概念。 将字符也确定为带符号(signed)和不带符号(unsigned)的。 丢弃了long float(原来作为double的同义词)。 引入了void类型,用 (void*) 表示通用指针的类型(过去人们通常用 (char*))。 对算术类型规定了最小表示范围。要求每个C语言系统用头文件(<limits.h>;和<float.h>;)说明实现中的具体规定。 引进了枚举定义enum。 采用了来自C++的类型修饰符,如const。 规定字符串常量是不可修改的。 改变了算术类型的隐含转换规则。 删去了一些过时赋值运算符,如 =+。规定赋值运算符都是基本单词,如 += 之间不能有空格分隔。 引进了与一元 - 运算符对应的一元 + 运算符。 指向函数的指针可以直接放在函数调用的位置,不必显式地写间接操作。 允许结构地整体赋值,作为函数参数和返回值传递。 允许将取地址运算符作用于数组,得到的是指向有关数组的指针。 标准规定 sizeof 运算符的返回值为 size_t 类型(某个无符号整型),这一类型在标准头文件<stddef.h>;里定义。同时在那里定义的还有 ptrdiff_t 类型,它是指针减运算的结果类型。 规定取地址运算符不能作用于 register 变量。 规定移位表达式的类型为其左运算对象的类型。 允许建立指向过数组末元素一个位置的指针,以及对它的算术运算和关系运算。 (从C++)引进了包含参数类型的函数原型概念,引进了变长参数表函数的概念。仍允许老的形式,但仅仅是作为过时形式保留。 标准规定任何局部声明的作用域仅仅是当前的块(复合语句)。 规定函数参数作为加入函数体(复合语句)的声明,因此不能用变量声明去覆盖。 有关名字空间的规定:所有结构、联合和枚举标记在一个名字空间里,标号是另一个名字空间。 联合变量在定义时也可以初始化,规定初始化其第一个成分。 自动结构、联合和数组也可以初始化,但限制其初始化方式(其中只能包含常量表达式)。 带大小描述的字符数组也可以用大小与之相同的字符串常量初始化(结束的 \0 被删除)。 开关语句的控制表达式和case标号可以是任何整型的(包括字符类型)。

    踩0 评论0
  • 01.10 09:57:13
    回答了问题 2020-01-10 09:57:13

    Flutter真机调试的时候print不输出日志

    日志tag是flutter,logcat和console都能看到的

    踩0 评论0
  • 01.10 09:55:50
    回答了问题 2020-01-10 09:55:50

    请问使用JSAPI拉起支付需要什么条件

    JSAPI支付在请求支付的时候会校验请求来源是否有在商户平台做了配置,所以必须确保支付目录已经正确的被配置,否则将验证失败,请求支付不成功

    踩0 评论0
  • 01.09 18:45:21
    回答了问题 2020-01-09 18:45:21

    如何使用99行Python代码实现《冰雪奇缘》特效?

    代码:

    import taichi as ti quality = 1 # Use a larger value for higher-res simulations n_particles, n_grid = 9000 * quality ** 2, 128 * quality dx, inv_dx = 1 / n_grid, float(n_grid) dt = 1e-4 / quality p_vol, p_rho = (dx * 0.5)**2, 1 p_mass = p_vol * p_rho E, nu = 0.1e4, 0.2 # Young's modulus and Poisson's ratio mu_0, lambda_0 = E / (2 * (1 + nu)), E * nu / ((1+nu) * (1 - 2 * nu)) # Lame parameters

    x = ti.Vector(2, dt=ti.f32, shape=n_particles) # position v = ti.Vector(2, dt=ti.f32, shape=n_particles) # velocity C = ti.Matrix(2, 2, dt=ti.f32, shape=n_particles) # affine velocity field F = ti.Matrix(2, 2, dt=ti.f32, shape=n_particles) # deformation gradient material = ti.var(dt=ti.i32, shape=n_particles) # material id Jp = ti.var(dt=ti.f32, shape=n_particles) # plastic deformation grid_v = ti.Vector(2, dt=ti.f32, shape=(n_grid, n_grid)) # grid node momemtum/velocity grid_m = ti.var(dt=ti.f32, shape=(n_grid, n_grid)) # grid node mass ti.cfg.arch = ti.cuda # Try to run on GPU

    @ti.kernel def substep(): for i, j in ti.ndrange(n_grid, n_grid): grid_v[i, j] = [0, 0] grid_m[i, j] = 0 for p in range(n_particles): # Particle state update and scatter to grid (P2G) base = (x[p] * inv_dx - 0.5).cast(int) fx = x[p] * inv_dx - base.cast(float) # Quadratic kernels [http://mpm.graphics Eqn. 123, with x=fx, fx-1,fx-2] w = [0.5 * ti.sqr(1.5 - fx), 0.75 - ti.sqr(fx - 1), 0.5 * ti.sqr(fx - 0.5)] F[p] = (ti.Matrix.identity(ti.f32, 2) + dt * C[p]) @ F[p] # deformation gradient update h = ti.exp(10 * (1.0 - Jp[p])) # Hardening coefficient: snow gets harder when compressed if material[p] == 1: # jelly, make it softer h = 0.3 mu, la = mu_0 * h, lambda_0 * h if material[p] == 0: # liquid mu = 0.0 U, sig, V = ti.svd(F[p]) J = 1.0 for d in ti.static(range(2)): new_sig = sig[d, d] if material[p] == 2: # Snow new_sig = min(max(sig[d, d], 1 - 2.5e-2), 1 + 4.5e-3) # Plasticity Jp[p] *= sig[d, d] / new_sig sig[d, d] = new_sig J *= new_sig if material[p] == 0: # Reset deformation gradient to avoid numerical instability F[p] = ti.Matrix.identity(ti.f32, 2) * ti.sqrt(J) elif material[p] == 2: F[p] = U @ sig @ V.T() # Reconstruct elastic deformation gradient after plasticity stress = 2 * mu * (F[p] - U @ V.T()) @ F[p].T() + ti.Matrix.identity(ti.f32, 2) * la * J * (J - 1) stress = (-dt * p_vol * 4 * inv_dx * inv_dx) * stress affine = stress + p_mass * C[p] for i, j in ti.static(ti.ndrange(3, 3)): # Loop over 3x3 grid node neighborhood offset = ti.Vector([i, j]) dpos = (offset.cast(float) - fx) * dx weight = w[i][0] * w[j][1] grid_v[base + offset] += weight * (p_mass * v[p] + affine @ dpos) grid_m[base + offset] += weight * p_mass for i, j in ti.ndrange(n_grid, n_grid): if grid_m[i, j] > 0: # No need for epsilon here grid_v[i, j] = (1 / grid_m[i, j]) * grid_v[i, j] # Momentum to velocity grid_v[i, j][1] -= dt * 50 # gravity if i < 3 and grid_v[i, j][0] < 0: grid_v[i, j][0] = 0 # Boundary conditions if i > n_grid - 3 and grid_v[i, j][0] > 0: grid_v[i, j][0] = 0 if j < 3 and grid_v[i, j][1] < 0: grid_v[i, j][1] = 0 if j > n_grid - 3 and grid_v[i, j][1] > 0: grid_v[i, j][1] = 0 for p in range(n_particles): # grid to particle (G2P) base = (x[p] * inv_dx - 0.5).cast(int) fx = x[p] * inv_dx - base.cast(float) w = [0.5 * ti.sqr(1.5 - fx), 0.75 - ti.sqr(fx - 1.0), 0.5 * ti.sqr(fx - 0.5)] new_v = ti.Vector.zero(ti.f32, 2) new_C = ti.Matrix.zero(ti.f32, 2, 2) for i, j in ti.static(ti.ndrange(3, 3)): # loop over 3x3 grid node neighborhood dpos = ti.Vector([i, j]).cast(float) - fx g_v = grid_v[base + ti.Vector([i, j])] weight = w[i][0] * w[j][1] new_v += weight * g_v new_C += 4 * inv_dx * weight * ti.outer_product(g_v, dpos) v[p], C[p] = new_v, new_C x[p] += dt * v[p] # advection

    import random group_size = n_particles // 3 for i in range(n_particles): x[i] = [random.random() * 0.2 + 0.3 + 0.10 * (i // group_size), random.random() * 0.2 + 0.05 + 0.32 * (i // group_size)] material[i] = i // group_size # 0: fluid 1: jelly 2: snow v[i] = [0, 0] F[i] = [[1, 0], [0, 1]] Jp[i] = 1

    import numpy as np gui = ti.GUI("Taichi MLS-MPM-99", res=512, background_color=0x112F41) for frame in range(20000): for s in range(int(2e-3 // dt)): substep() colors = np.array([0x068587, 0xED553B, 0xEEEEF0], dtype=np.uint32) gui.circles(x.to_numpy(), radius=1.5, color=colors[material.to_numpy()]) gui.show() # Change to gui.show(f'{frame:06d}.png') to write images to disk

    踩0 评论0
  • 01.09 18:42:32
    回答了问题 2020-01-09 18:42:32

    内层图片元素高度自适应,外层盒子高度如何保持跟图片高度一致?

    img设置 vertical-align: bottom;

    踩0 评论0
  • 01.09 18:42:07
    回答了问题 2020-01-09 18:42:07

    Redis是如何实现点赞、取消点赞的?

    这个问题比较宽广,无法简单叙述。你可以参考如下文章: https://segmentfault.com/a/1190000021136286

    踩0 评论0
  • 01.09 18:40:47
    回答了问题 2020-01-09 18:40:47

    Spring 中这样的方法名是怎样出现的呢?

    这是内部类的命名方式,源码是没有的,编译后class文件的名称是这个格式,你也可以在本地写个内部类看看

    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2020-01-15

    【hi聊】2020新年展望:get程序员过年的正确姿势

    新年新气象,预祝阿里云社区和回答社区越来越好

    踩0 评论0
  • 回答了问题 2020-01-15

    充值能不能开票?

    充值什么呀,如果是阿里云则可以开。 参考: https://jingyan.baidu.com/article/22a299b58656709e19376af9.html

    踩0 评论0
  • 回答了问题 2020-01-15

    新程序员七宗罪

    1. 没有一个初步的战略 大多数没有计算机科学或数据分析背景的工程师想要在数据科学中开始一个新的职业生涯,他们没有一个明确的战略,没有成为数据科学家、分析师或工程师的明确步骤。他们试图尽可能快地用信息填满自己的脑袋,而不是真正深入到特定的主题;他们倾向于一次注册多个在线课程,从不同的网站下载几个备忘单,阅读许多作者的文章,但没有一个结构化的计划。在开始这段旅程之前,我强烈建议你制定一个学习计划,并列出一些日常习惯,以实现你的目标,增强你的分析和编程技能。对你想从事的行业使用的最流行的编程语言和软件进行自己的研究,搜索最广泛使用的库和包,并根据你的目标选择最适合你的编程语言和软件。坚持和练习会使你成为大师。

    2. 尝试同时学习几种编程语言和软件 新程序员常常会受到诱惑,想要同时学习几种编程语言和软件,把它们作为技术技能写进简历。虽然你可能认为这是一种营销自己的策略,但它往往会适得其反。拥有数据科学、数据分析师和数据工程职位的公司和组织更有可能要求应聘者具备一种或两种或最多三种编程语言和软件的坚实背景。很少有职位要求你同时精通Python, R, SQL, C, c , c#, Matlab, Java, Ruby。相反,你应该研究一下你更可能在某个特定行业或公司使用的编程语言和软件;掌握你的编程和分析技能,并成为真正的专家。你将认识到,所有编程语言之间共享一个公共逻辑和类似的函数,在此之后,从一种语言到另一种语言的转换只需要学习一种不同的语法,而不需要学习它背后的整个逻辑。

    3.没有在代码上写注释 尽管这听起来很明显,而且是一个无关紧要的任务,但它代表了一种很好的策略,可以跟踪每一行或每一块代码执行的操作,以便返回到暂停的项目。在最初的代码编写过程中,程序员对项目的目的和目标有了清晰而清晰的认识;他们知道自己想要编写的程序背后的逻辑步骤和追求的结果。然而,由于多种原因(经济约束、信息缺失、优先级的改变),所有的项目都很容易暂停,这将迫使程序员切换到不同的任务,而让先前的任务保持不变。一个中断的项目需要的时间越长,就越不容易记住它的位置和缺失的点。这里是注释发挥作用的地方。试着在你认为有必要的地方使用它们;记住要足够清晰,并记住它们应该允许代码程序员和执行者理解代码背后的逻辑步骤。

    1. 在代码编写过程中不要求反馈 在你的经理要求你做什么,他/她希望你做什么,客户要求什么,和你实际做什么之间总是有很大的差距。当你在开发一个程序或新代码时,试着把它分成几个阶段,并在进入下一个阶段之前征求反馈。在每个阶段结束后得到反馈,这将让你知道你是否正确,或者是否需要根据客户的要求进行更改。这并不意味着你无法理解其他人的要求,而是将其视为利益相关者之间的想法和期望的统一。如果在偏离正轨的情况下,你收到反馈的频率越高,你需要进行的修改就越少。请记住,持续的沟通对于每一个项目的成功实施都是至关重要的。

    2. 没有测试你当前的知识 你可能已经看了很多逐步编程教程。你可能也读过许多数据科学书籍和编程书。你可能已经完成了许多编程训练营的练习。下一步是什么?测试你目前的知识。这种训练营和课程的真正价值不在于证书本身,而在于你学到的知识,并能成功地应用于解决某个问题。老实说,每个人都可以通过参加在线课程来获得证书,只要跳过大部分的课程就可以了;公司和组织都非常清楚这一点。尝试把自己推向新的极限,在网上寻找编程挑战,尝试头脑风暴,在没有太多帮助资源的情况下编写代码。这并不意味着你在实际工作中不会用到它们,但它会让你感觉更舒服,更安全,更少依赖它们。

    3. 没有充分利用优缺点 在某种程度上,你可能会觉得使用一种特定的编程语言和软件是很舒服的,而你可能会发现学习一种新的语言和软件是没有用的。我曾多次听到数据分析师争论哪种编程语言在能力、可用库和包、在线资源和流行程度方面是最好的。但是,你必须足够谦虚,认识到总有从另一种语言、库、包或软件中学习新东西的空间。每种编程语言和软件都有其优点和缺点,但是我们的目标是充分利用它们,并具有足够的灵活性,以确定最适合用于特定任务以解决特定问题的语言和软件。

    4. 假设你什么都知道 相信我,没有人什么都知道。数据科学领域非常广泛,每天都要学习新东西。库、包、函数、方法和算法的总数非常多。永远保持好奇,保持谦虚,如果你认为你知道的很多,你实际知道的就很少。 ———————————————— 版权声明:本文为CSDN博主「磐创 AI」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/fendouaini/article/details/103252444

    踩0 评论0
  • 回答了问题 2020-01-15

    最佳实践的阅读过程中碰到问题怎么联系作者?

    论坛、邮箱、个人微博,个人主页等,根据作者的爱好来

    踩0 评论0
  • 回答了问题 2020-01-15

    数据告诉你:哪个行业最难逃35岁危机?

    不转型的程序员

    踩0 评论0
  • 回答了问题 2020-01-15

    硬核 | 程序员接私活常用平台汇总

    听说过猪八戒,不过没使用过

    踩0 评论0
  • 回答了问题 2020-01-14

    如何去除datav加载动画

    去除不了吧,再说还挺酷的,加载完成后就一直展示,没有什么影响的。 参考:https://developer.aliyun.com/ask/109382?spm=a2c6h.13159736

    踩0 评论0
  • 回答了问题 2020-01-14

    关于备案得事情咨询。

    你可以先检查下自己的材料是否准备无误,或者有什么地方存在模糊不清的地方,另外在和客服了解具体卡在哪一步,对症下药。

    踩0 评论0
  • 回答了问题 2020-01-13

    各大网站的Python爬取登录汇总—含教程

    感谢大佬的教程。与有去学习下

    踩0 评论0
  • 回答了问题 2020-01-13

    请问已备案网站如何增加新域名?

    还需要去备案中心进行域名添加备案,填写内容和上次差不多,不过这次的域名还要填写用途和网站名,其他个人信息好像不用再填。

    踩0 评论0
  • 回答了问题 2020-01-13

    昨晚家里停网后,我动了邪念用Python破解了隔壁小姐姐的wifi密码!

    那你最后加了小姐姐微信或要到电话没,去小姐姐家浪没。你还可以了解下Kali Linux系统

    踩0 评论0
  • 回答了问题 2020-01-13

    Rust 成为 C 的接班人,将变成主流编程语言?

    相关详细内容参考:https://www.infoq.cn/article/iZx5Blf9hOeZjRguHzK5

    C 写 driver 的主要缺陷在于 C 赋予程序员的自由度过大,所谓能力越大责任越大,程序员需要小心处理各种细节以保证 driver 的安全。在一些情况下,程序员容易因为疏忽大意写出不安全的代码。例如申请的内存忘记释放(内存泄漏),使用了已经被释放的指针(use-after-free),数组越界访问(buffer overflow)等等。这些错误大多归因为 C 是一门不安全的语言。

    前段时间,随着微软计划用 Rust 取代 C 和 C++ 新闻的曝出,Rust 被认为是 C/C++ 的接班人。由 Mozilla 开发的 Rust 被认为具有较强的安全性。同时,由于特殊的类型系统,Rust 不需要垃圾收集,也被认为是高效的。Rust 程序运行速度极快,可防止段错误并保证线程安全。这些属性使该语言极大地吸引了专注于应用程序安全性的开发人员。香港中文大学系统安全系博士李卓华指出,Rust 主要通过严格的语法和安全检查来限制程序员,“逼迫”程序员写出更安全的代码。例如 Rust 的 ownership 特性保证任何时刻,一个对象最多只有一个可变引用,且在其生命期结束后编译器会自动将其内存释放,从而避免了内存泄漏和 use-after-free 的问题

    踩0 评论0
  • 回答了问题 2020-01-10

    ANSI C和K&R C之间的主要区别是什么?

    ANSI C 对 K&R C 的修订. (本段根据《C Programming Language》和C语言标准整理。不求完整,希望列出最常见的差异) 对于源文件内部的标识符,有效的最小长度扩充到31个字符。文件间连接时,标识符的最小有效长度仍然为6个字符。(许多实现都支持更大的长度) 增加了几个新关键字:void,const,volatile,signed,enum。抛弃了老关键字entry。 在换意字符 \ 之后写非规定的序列,其作用确定为无定义。 规定8和9都不是八进制数的合法字符。 引进了数的后缀字符:整数的U和L,浮点数的F和L。 规定连续出现的字符串常量将被拼接在一起。 引进了“宽字符”的概念。 将字符也确定为带符号(signed)和不带符号(unsigned)的。 丢弃了long float(原来作为double的同义词)。 引入了void类型,用 (void*) 表示通用指针的类型(过去人们通常用 (char*))。 对算术类型规定了最小表示范围。要求每个C语言系统用头文件(<limits.h>;和<float.h>;)说明实现中的具体规定。 引进了枚举定义enum。 采用了来自C++的类型修饰符,如const。 规定字符串常量是不可修改的。 改变了算术类型的隐含转换规则。 删去了一些过时赋值运算符,如 =+。规定赋值运算符都是基本单词,如 += 之间不能有空格分隔。 引进了与一元 - 运算符对应的一元 + 运算符。 指向函数的指针可以直接放在函数调用的位置,不必显式地写间接操作。 允许结构地整体赋值,作为函数参数和返回值传递。 允许将取地址运算符作用于数组,得到的是指向有关数组的指针。 标准规定 sizeof 运算符的返回值为 size_t 类型(某个无符号整型),这一类型在标准头文件<stddef.h>;里定义。同时在那里定义的还有 ptrdiff_t 类型,它是指针减运算的结果类型。 规定取地址运算符不能作用于 register 变量。 规定移位表达式的类型为其左运算对象的类型。 允许建立指向过数组末元素一个位置的指针,以及对它的算术运算和关系运算。 (从C++)引进了包含参数类型的函数原型概念,引进了变长参数表函数的概念。仍允许老的形式,但仅仅是作为过时形式保留。 标准规定任何局部声明的作用域仅仅是当前的块(复合语句)。 规定函数参数作为加入函数体(复合语句)的声明,因此不能用变量声明去覆盖。 有关名字空间的规定:所有结构、联合和枚举标记在一个名字空间里,标号是另一个名字空间。 联合变量在定义时也可以初始化,规定初始化其第一个成分。 自动结构、联合和数组也可以初始化,但限制其初始化方式(其中只能包含常量表达式)。 带大小描述的字符数组也可以用大小与之相同的字符串常量初始化(结束的 \0 被删除)。 开关语句的控制表达式和case标号可以是任何整型的(包括字符类型)。

    踩0 评论0
  • 回答了问题 2020-01-10

    Flutter真机调试的时候print不输出日志

    日志tag是flutter,logcat和console都能看到的

    踩0 评论0
  • 回答了问题 2020-01-10

    请问使用JSAPI拉起支付需要什么条件

    JSAPI支付在请求支付的时候会校验请求来源是否有在商户平台做了配置,所以必须确保支付目录已经正确的被配置,否则将验证失败,请求支付不成功

    踩0 评论0
  • 回答了问题 2020-01-09

    如何使用99行Python代码实现《冰雪奇缘》特效?

    代码:

    import taichi as ti quality = 1 # Use a larger value for higher-res simulations n_particles, n_grid = 9000 * quality ** 2, 128 * quality dx, inv_dx = 1 / n_grid, float(n_grid) dt = 1e-4 / quality p_vol, p_rho = (dx * 0.5)**2, 1 p_mass = p_vol * p_rho E, nu = 0.1e4, 0.2 # Young's modulus and Poisson's ratio mu_0, lambda_0 = E / (2 * (1 + nu)), E * nu / ((1+nu) * (1 - 2 * nu)) # Lame parameters

    x = ti.Vector(2, dt=ti.f32, shape=n_particles) # position v = ti.Vector(2, dt=ti.f32, shape=n_particles) # velocity C = ti.Matrix(2, 2, dt=ti.f32, shape=n_particles) # affine velocity field F = ti.Matrix(2, 2, dt=ti.f32, shape=n_particles) # deformation gradient material = ti.var(dt=ti.i32, shape=n_particles) # material id Jp = ti.var(dt=ti.f32, shape=n_particles) # plastic deformation grid_v = ti.Vector(2, dt=ti.f32, shape=(n_grid, n_grid)) # grid node momemtum/velocity grid_m = ti.var(dt=ti.f32, shape=(n_grid, n_grid)) # grid node mass ti.cfg.arch = ti.cuda # Try to run on GPU

    @ti.kernel def substep(): for i, j in ti.ndrange(n_grid, n_grid): grid_v[i, j] = [0, 0] grid_m[i, j] = 0 for p in range(n_particles): # Particle state update and scatter to grid (P2G) base = (x[p] * inv_dx - 0.5).cast(int) fx = x[p] * inv_dx - base.cast(float) # Quadratic kernels [http://mpm.graphics Eqn. 123, with x=fx, fx-1,fx-2] w = [0.5 * ti.sqr(1.5 - fx), 0.75 - ti.sqr(fx - 1), 0.5 * ti.sqr(fx - 0.5)] F[p] = (ti.Matrix.identity(ti.f32, 2) + dt * C[p]) @ F[p] # deformation gradient update h = ti.exp(10 * (1.0 - Jp[p])) # Hardening coefficient: snow gets harder when compressed if material[p] == 1: # jelly, make it softer h = 0.3 mu, la = mu_0 * h, lambda_0 * h if material[p] == 0: # liquid mu = 0.0 U, sig, V = ti.svd(F[p]) J = 1.0 for d in ti.static(range(2)): new_sig = sig[d, d] if material[p] == 2: # Snow new_sig = min(max(sig[d, d], 1 - 2.5e-2), 1 + 4.5e-3) # Plasticity Jp[p] *= sig[d, d] / new_sig sig[d, d] = new_sig J *= new_sig if material[p] == 0: # Reset deformation gradient to avoid numerical instability F[p] = ti.Matrix.identity(ti.f32, 2) * ti.sqrt(J) elif material[p] == 2: F[p] = U @ sig @ V.T() # Reconstruct elastic deformation gradient after plasticity stress = 2 * mu * (F[p] - U @ V.T()) @ F[p].T() + ti.Matrix.identity(ti.f32, 2) * la * J * (J - 1) stress = (-dt * p_vol * 4 * inv_dx * inv_dx) * stress affine = stress + p_mass * C[p] for i, j in ti.static(ti.ndrange(3, 3)): # Loop over 3x3 grid node neighborhood offset = ti.Vector([i, j]) dpos = (offset.cast(float) - fx) * dx weight = w[i][0] * w[j][1] grid_v[base + offset] += weight * (p_mass * v[p] + affine @ dpos) grid_m[base + offset] += weight * p_mass for i, j in ti.ndrange(n_grid, n_grid): if grid_m[i, j] > 0: # No need for epsilon here grid_v[i, j] = (1 / grid_m[i, j]) * grid_v[i, j] # Momentum to velocity grid_v[i, j][1] -= dt * 50 # gravity if i < 3 and grid_v[i, j][0] < 0: grid_v[i, j][0] = 0 # Boundary conditions if i > n_grid - 3 and grid_v[i, j][0] > 0: grid_v[i, j][0] = 0 if j < 3 and grid_v[i, j][1] < 0: grid_v[i, j][1] = 0 if j > n_grid - 3 and grid_v[i, j][1] > 0: grid_v[i, j][1] = 0 for p in range(n_particles): # grid to particle (G2P) base = (x[p] * inv_dx - 0.5).cast(int) fx = x[p] * inv_dx - base.cast(float) w = [0.5 * ti.sqr(1.5 - fx), 0.75 - ti.sqr(fx - 1.0), 0.5 * ti.sqr(fx - 0.5)] new_v = ti.Vector.zero(ti.f32, 2) new_C = ti.Matrix.zero(ti.f32, 2, 2) for i, j in ti.static(ti.ndrange(3, 3)): # loop over 3x3 grid node neighborhood dpos = ti.Vector([i, j]).cast(float) - fx g_v = grid_v[base + ti.Vector([i, j])] weight = w[i][0] * w[j][1] new_v += weight * g_v new_C += 4 * inv_dx * weight * ti.outer_product(g_v, dpos) v[p], C[p] = new_v, new_C x[p] += dt * v[p] # advection

    import random group_size = n_particles // 3 for i in range(n_particles): x[i] = [random.random() * 0.2 + 0.3 + 0.10 * (i // group_size), random.random() * 0.2 + 0.05 + 0.32 * (i // group_size)] material[i] = i // group_size # 0: fluid 1: jelly 2: snow v[i] = [0, 0] F[i] = [[1, 0], [0, 1]] Jp[i] = 1

    import numpy as np gui = ti.GUI("Taichi MLS-MPM-99", res=512, background_color=0x112F41) for frame in range(20000): for s in range(int(2e-3 // dt)): substep() colors = np.array([0x068587, 0xED553B, 0xEEEEF0], dtype=np.uint32) gui.circles(x.to_numpy(), radius=1.5, color=colors[material.to_numpy()]) gui.show() # Change to gui.show(f'{frame:06d}.png') to write images to disk

    踩0 评论0
  • 回答了问题 2020-01-09

    内层图片元素高度自适应,外层盒子高度如何保持跟图片高度一致?

    img设置 vertical-align: bottom;

    踩0 评论0
  • 回答了问题 2020-01-09

    Redis是如何实现点赞、取消点赞的?

    这个问题比较宽广,无法简单叙述。你可以参考如下文章: https://segmentfault.com/a/1190000021136286

    踩0 评论0
  • 回答了问题 2020-01-09

    Spring 中这样的方法名是怎样出现的呢?

    这是内部类的命名方式,源码是没有的,编译后class文件的名称是这个格式,你也可以在本地写个内部类看看

    踩0 评论0
  • 回答了问题 2020-01-09

    element中的分页,表格多选,数据绑定问题

    1、分页加载的table数据 每次都是按照页码查询、即使第一列选中后,切换2页table的数据会重新渲染,不回出现这种问题,看下选中的流水是否需要重置 table多选重置

    table 添加ref ref="multipleTable"

    js执行、在数据加载完或时间中执行 this.$refs.multipleTable.clearSelection()

    踩0 评论0
正在加载, 请稍后...
滑动查看更多